-- lock 可重入脚本 脚本
local key=KEYS[1]
local val=ARGV[1]
local ttl=tonumber(ARGV[2])


local localLock=0; -- 0上锁失败 1上锁成功
-- 判断是否有锁
local isExists=redis.call('HSETNX',key,'value',val)
-- local localSet=redis.call('setnx',key,val)
if isExists==1 then
    redis.call('HMSET',key,'count',1);
    redis.call('PEXPIRE',key,ttl)
    localLock=1
    -- 如果已经存在了 看看是不是同一线程了
else
    local value=redis.call('HGET',key,'value')
    if val==value then
        localLock=1
        redis.call('HINCRBY',key,'count',1)
        redis.call('PEXPIRE',key,ttl)
    end
end
return localLock

